package com.ruoyi.controller;


import cn.hutool.core.util.ObjectUtil;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.entity.Carousel;
import com.ruoyi.common.service.CarouselService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 轮播图管理控制器
 */
@RestController
@RequestMapping("/carousel/carousel")
public class CarouselController {

    @Autowired
    private CarouselService carouselService;

    /**
     * 查询轮播图列表
     * @param query 查询参数（可选，可包含分页、排序等信息）
     * @return 轮播图列表
     */
    @GetMapping("/list")
    public R<List<Carousel>> listCarousel(@RequestParam(required = false) String query) {
        try {
            List<Carousel> carousels = carouselService.listCarousel(query);
            return R.ok(carousels);
        } catch (Exception e) {
            return R.fail("查询轮播图列表失败：" + e.getMessage());
        }
    }

    /**
     * 查询轮播图详情
     * @param id 轮播图ID
     * @return 轮播图详情
     */
    @GetMapping("/{id}")
    public R<Carousel> getCarousel(@PathVariable Long id) {
        try {
            Carousel carousel = carouselService.getCarouselById(id);
            if (carousel == null) {
                return R.fail("轮播图不存在");
            }
            return R.ok(carousel);
        } catch (Exception e) {
            return R.fail("查询轮播图详情失败：" + e.getMessage());
        }
    }

    /**
     * 新增轮播图
     * @param carousel 轮播图信息
     * @return 操作结果
     */
    @PostMapping
    public R<String> addCarousel(@RequestBody Carousel carousel) {
        try {
            // 可以在这里添加数据验证逻辑
            carouselService.saveCarousel(carousel);
            return R.ok("轮播图添加成功");
        } catch (Exception e) {
            return R.fail("添加轮播图失败：" + e.getMessage());
        }
    }

    /**
     * 修改轮播图
     * @param carousel 轮播图信息（包含ID）
     * @return 操作结果
     */
    @PutMapping
    public R<String> updateCarousel(@RequestBody Carousel carousel) {
        try {
            if (ObjectUtil.isNull(carousel.getConfigId())) {
                return R.fail("轮播图ID不能为空");
            }
            // 检查轮播图是否存在
            Carousel existing = carouselService.getCarouselById(carousel.getConfigId());
            if (existing == null) {
                return R.fail("轮播图不存在");
            }
            carouselService.updateCarousel(carousel);
            return R.ok("轮播图更新成功");
        } catch (Exception e) {
            return R.fail("更新轮播图失败：" + e.getMessage());
        }
    }

    /**
     * 删除轮播图
     * @param id 轮播图ID
     * @return 操作结果
     */
    @DeleteMapping("/{id}")
    public R<String> deleteCarousel(@PathVariable Long id) {
        try {
            // 检查轮播图是否存在
            Carousel existing = carouselService.getCarouselById(id);
            if (existing == null) {
                return R.fail("轮播图不存在");
            }
            carouselService.deleteCarousel(id);
            return R.ok("轮播图删除成功");
        } catch (Exception e) {
            return R.fail("删除轮播图失败：" + e.getMessage());
        }
    }
}
